const util = require( "./util");

module.exports = {

    /**
     * 获取单条数据
     * @param {*} context 默认请求参数上下文
     * @param {*} tableName 表名
     * @param {*} param 查询参数 {Object}
     */
    async selectOne(context,tableName,param) {
        console.info("selectOne:");
        console.info("tableName",tableName);
        console.info("param",param);
        const result = await context.cloud.db.collection(tableName).find(
            param
        );
        console.info("selectOne is complete. result=" + result);
        return result.length>0 ? result[0]:null;
    },

    /**
     * 根据条件查询数据
     * @param {*} context 默认请求参数上下文
     * @param {*} tableName 表名
     * @param {*} param 查询参数 {Object}
     * @param {*} filter 过滤参数 {Object}
     */
    async selectList(context,tableName,param,filter) {
        console.info("selectList:");
        console.info("tableName",tableName);
        console.info("param",param);
        const result = await context.cloud.db.collection(tableName).find(
            param,
            filter
        );
        console.info("selectList is complete. result=" + result);
        return result;
    },

    /**
     * 插入单条数据
     * @param {*} context 默认请求参数上下文
     * @param {*} tableName 表名
     * @param {*} data 插入参数 {Object}
     * @returns 新增数据的_id
     */
    async insertOne(context,tableName,data) {
        console.info("insertOne:");
        console.info("tableName",tableName);
        console.info("data",data);
        const result = await context.cloud.db.collection(tableName).insertOne(
            data
        );
        console.info("insertOne is complete. result=" + result);
        return result;
    },

    /**
     * 根据_id修改数据
     * @param {*} context 默认请求参数上下文
     * @param {*} tableName 表名
     * @param {*} data 修改的参数 {Object} _id 必传
     */
    async updateById(context,tableName,data) {
        console.info("update:");
        console.info("tableName",tableName);
        console.info("data",data);
        let _id = data._id;
        if (!_id) {
            let res = {
                code:-1,
                meg:'_id-是必须的'
            };
            return {res}
        }
        const result = await context.cloud.db.collection(tableName).updateMany(
            {_id:_id},
            {$set:data}
        );
        console.info("updateById is complete. result=" + result);
        return result;
    },

    /**
     * 根据参数删除
     * @param {*} context 默认请求参数上下文
     * @param {*} tableName 表名
     * @param {*} param 参数 {Object} 多余的条件不能传, '' 不能传入
     */
    async deleteMany(context,tableName,param){
        console.info("deleteMany:")
        console.info("tableName",tableName);
        console.info("param",param);
        const result = await context.cloud.db.collection(tableName).deleteMany(param);
        console.info("updateById is complete. result=" + result);
        return result;
    },
}